package net.lab1024.sa.admin.module.sast.task.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.Date;
@Data
@TableName("t_task")
public class TaskEntity {
    /**
     * 任务唯一标识（主键）
     */
    private Long id;

    /**
     * 任务全局唯一标识，与外部系统交互时使用（部分版本可能与id复用）
     */
    private String uuid;

    /**
     * 关联的组件UUID（对应projects表的uuid，绑定具体项目/分支）
     */
    private String componentUuid;

    /**
     * 任务状态，枚举值：PENDING（待处理）、IN_PROGRESS（运行中）、SUCCEEDED（成功）、FAILED（失败）、CANCELED（取消）
     */
    private int status;

    /**
     * 任务类型，枚举值：REPORT（报告生成）、ANALYSIS（代码分析）、QUALITY_GATE（质量门评估）等
     */
    private String type;

    /**
     * 提交任务的用户登录名（关联users表的login）
     */
    private String submitterLogin;

    /**
     * 任务提交时间戳（毫秒级，Unix时间）
     */
    private Date submittedAt;

    /**
     * 任务开始执行时间戳（未开始时为NULL）
     */
    private Date startedAt;

    /**
     * 任务实际执行完成时间戳（未完成时为NULL）
     */
    private Date executedAt;

    /**
     * 任务执行耗时（秒，executed_at - started_at计算，未完成时为NULL）
     */
    private Long executionTime;

    /**
     * 任务失败时的错误信息（成功时为NULL）
     */
    private String errorMessage;

    /**
     * 任务失败时的异常堆栈信息（用于问题排查，成功时为NULL）
     */
    private String errorStacktrace;

    /**
     * 任务特征参数（JSON格式），如分析的分支名称、扫描范围等
     */
    private String characteristics;

    /**
     * 任务执行的简要日志摘要（详细日志存储在task_logs表）
     */
    private String logs;
}
